//#include <bits/stdc++.h>
//using namespace std;
//
//int main()
//{
//	int n, a, b;
//	cin >> n >> a >> b;
//	vector<int> w(n);
//	for (int i = 0; i < n; i++) {
//		cin >> w[i];
//	}
//	sort(w.begin(), w.end());
//
//	int cnt = 0;
//	while (!w.empty()) {
//		sort(w.begin(), w.end());
//		for (int i = 0; i < w.size(); i++) {
//			if (i == w.size() - 1) {
//				w[i] -= a + b;
//			} else {
//				w[i] -= a;
//			}
//		}
//		cnt++;
//		while (!w.empty() && w.back() <= 0) {
//			w.pop_back();
//		}
//	}
//
//	cout << cnt << endl;
//	return 0;
//}
// 2tle
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int> pq;
int main()
{
	int n, a, b;
	cin >> n >> a >> b;
//	vector<int> w(n);
	int x = 0;
	for (int i = 0; i < n; i++) {
		cin >> x;
		pq.push(x);
	}
	int cnt = 0;
	while (1) {
		cnt ++;
		int val = pq.top();// 取出堆顶 即最大值
		pq.pop();
		val -= b; // 烘干
		pq.push(val);
		int flag = pq.top() - cnt * a;
		if (flag <= 0) {
			cout << cnt << endl;
			break;
		}
	}
	return 0;
}
